package com.dhu.cst.ningtianzhe181310419.test;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

import static cn.smssdk.SMSSDK.getVerificationCode;

public class RegisterActivity extends AppCompatActivity {
    public EditText name;
    public EditText phoneNumber;
    public static Button button_getCode;
    public EditText code;
    public static String number;
    public EventHandler eh; //事件接收器
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        this.getSupportActionBar().hide();
        initView();
        init();
    }
    protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterEventHandler(eh);
    }
    public void initView(){
        name = this.findViewById(R.id.name);
        phoneNumber = this.findViewById(R.id.phoneNumber);
        button_getCode = this.findViewById(R.id.getCode);
        code = this.findViewById(R.id.code);
    }
    //获取验证码按钮事件
    public void getCode(View view){
        number = phoneNumber.getText().toString();
        if(isMobile(number)) {
            SMSSDK.getVerificationCode(null, "86", number);//获取验证码
            delay();
        }
        else{
            Toast.makeText(RegisterActivity.this,"手机号格式错误，请重新输入",Toast.LENGTH_SHORT).show();
        }
    }
    //用新的线程进行计时
    public void delay() {
        TimeThread timeThread = new TimeThread();
        timeThread.start();
    }
    //判断验证码有关信息并回调
    public void init(){
        eh=new EventHandler(){

            @Override
            public void afterEvent(int event, int result, Object data) {

                if (result == SMSSDK.RESULT_COMPLETE) {
                    //回调完成
                    if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                        //提交验证码成功
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(RegisterActivity.this,"验证码正确",Toast.LENGTH_SHORT).show();
                                Intent intent = new Intent();
                                intent.setClass(RegisterActivity.this,InfoActivity.class);
                                RegisterActivity.this.startActivity(intent);
                            }
                        });
                    }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
                        //获取验证码成功
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(RegisterActivity.this,"验证码已发送",Toast.LENGTH_SHORT).show();
                            }
                        });
                    }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
                        //返回支持发送验证码的国家列表
                    }
                }else{
                    ((Throwable)data).printStackTrace();
                }
            }
        };
        SMSSDK.registerEventHandler(eh); //注册短信回调
    }

    /**
     * 验证手机格式
     */
    public boolean isMobile(String number) {
    /*
    移动：134、135、136、137、138、139、150、151、152、157(TD)、158、159、178(新)、182、184、187、188
    联通：130、131、132、152、155、156、185、186
    电信：133、153、170、173、177、180、181、189、（1349卫通）
    总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
    */
        String num = "[1][34578]\\d{9}";//"[1]"代表第1位为数字1，"[34578]"代表第二位可以为3、4、5、7、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(number)) {
            return false;
        } else {
            //matches():字符串是否在给定的正则表达式匹配
            return number.matches(num);
        }
    }
    //同意并加入按钮事件
    public void join(View view){
        if(!name.getText().toString().isEmpty()) {
            String inputVerificationCode = code.getText().toString();
            Info.name = name.getText().toString();
            Info.phoneNumber = phoneNumber.getText().toString();
            number = phoneNumber.getText().toString();
            SMSSDK.submitVerificationCode("86", number, inputVerificationCode);
        }
        else{
            Toast.makeText(RegisterActivity.this,"请输入真实姓名！",Toast.LENGTH_SHORT).show();
        }
    }
}
